﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQPad.OpenAccess.Services
{
    /// <summary>
    /// Facade for the data context services.
    /// </summary>
    public interface IDataContextServices
    {
        /// <summary>
        /// Gets the connection description provider.
        /// </summary>
        /// <value>
        /// The connection description provider.
        /// </value>
        IDataContextConnectionDescriptionProvider ConnectionDescriptionProvider { get; }
        /// <summary>
        /// Gets the custom member provider factory.
        /// </summary>
        /// <value>
        /// The custom member provider factory.
        /// </value>
        IDataContextCustomMemberProviderFactory CustomMemberProviderFactory { get; }
        /// <summary>
        /// Gets the initialization service.
        /// </summary>
        /// <value>
        /// The initialization service.
        /// </value>
        IDataContextInitializationService InitializationService { get; }
        /// <summary>
        /// Gets the schema provider.
        /// </summary>
        /// <value>
        /// The schema provider.
        /// </value>
        IDataContextSchemaProvider SchemaProvider { get; }
        /// <summary>
        /// Gets the settings repository.
        /// </summary>
        /// <value>
        /// The settings repository.
        /// </value>
        IDataContextSettingsRepository SettingsRepository { get; }
        /// <summary>
        /// Gets the user interaction service.
        /// </summary>
        /// <value>
        /// The user interaction service.
        /// </value>
        IDataContextUserInteractionService UserInteractionService { get; }
    }
}
